//import java.io.*;
//import java.util.ArrayList;
//import java.util.Comparator;
//import java.util.List;
//
//public class Main {
//    static List<Node> list = new ArrayList<>();
//    public static void main(String[] args) throws IOException {
//        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//        PrintStream out = new PrintStream(System.out);
//        int n = Integer.parseInt(in.readLine());
//        //1.存下c,d
//        for (int c = 0; c * c <= n; c++)
//            for (int d = c; c * c + d * d <= n; d++) {
//                list.add(new Node(c, d, c * c + d * d));
//            }
//        //list排序
//        list.sort(new Comparator<Node>() {
//            @Override
//            public int compare(Node o1, Node o2) {
//                return o1.cd - o2.cd;
//            }
//        });
//
//        //2.遍历a,b
//        for (int a = 0; a * a <= n; a++)
//            for (int b = a; b * b + a * a <= n; b++) {
//                int t = n - a * a - b * b;
//                //二分了，不能在依次遍历，这就是7为什么要排序！！！
//                int l = 0;
//                int r = list.size() - 1;
//                while (l < r) {
//                    int m = l + r >> 1;
//                    if (list.get(m).cd >= t) r = m;
//                    else l = m + 1;
//                }
//
//                if (list.get(l).cd == t) {
//                    System.out.println(a + " " + b + " " + list.get(l).c + " " + list.get(l).d);
//                    return;
//                }
//
//            }
//
//    }
//}
//class Node {
//    int c =0;
//    int d=0;
//    int cd = 0;//c*c+d*d
//
//    public Node(int c, int d, int cd) {
//        if(c>d) {
//            this.d=c;
//            this.c=d;
//        }
//        else {
//            this.c = c;
//            this.d = d;
//        }
//        this.cd = cd;
//    }
//}
